package com.hospital.BaseActivity;

import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.*;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.hospital.Common.BLocator;
import com.hospital.Common.CommonDao;
import com.hospital.Entity.Region;
import com.hospital.Entity.RootRegion;
import com.hospital.activity.R;
import com.hospital.adapter.RootRegionAdapter;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.*;

/**
 * Created by wangjun on 2015/6/10.
 */
public class RootRegionActivity extends BaseActivity {
    private boolean islogin = false;
    private List<String> lastNames;
    private List<RootRegion> lastRegions;
    private ListView mRegionListView;
    private RootRegionAdapter mRegionAdapter;
    private  Region regin;
    private List<Region> regions = new ArrayList<Region>();
    private List<Region> results = new ArrayList<Region>();
    private TextView mLocCity;

    private GridView lastGrid;
    private Region mLocRegion;
    private Region dwLogRegion;
    private static RootRegionActivity mInstance;
    private SharedPreferences share;
    private CommonDao mCommonDao;
    private Handler handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            super.handleMessage(msg);
            switch (msg.arg1) {
                case -1:
                    break;
                case 0:
                    JSONObject obj = (JSONObject) msg.obj;
//                    try {
//                        results = JSON.parseObject(obj.getString("results").toString(), new TypeReference<List<Region>>() {
//                        });
//                        mCommonDao.clearAllRegions();
//                        //	Log.i("1222222222",obj.getString("results").toString());
//                        mCommonDao.batchAddRegions(results);
//                        convertRegions(results);
//
//                        location();
//                    } catch (JSONException e) {
//                        e.printStackTrace();
//                    }
                    break;
                default:
                    break;
            }
        }
    };

    public static RootRegionActivity getContext() {
        return mInstance;
    }

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.root_region);
        mInstance = this;

        //Head head = new Head(this, "地区选择");

   //     share = getSharedPreferences("user_msg", 0);
   //     checkUpdateRegion();
  //      mCommonDao = CommonDao.getInstance(this);
//	mCommonDao.clearAllRegions();
        initView();
        initRegionDate();
        mRegionAdapter = new RootRegionAdapter(RootRegionActivity.this, regions, true);
        mRegionListView.setAdapter(mRegionAdapter);

        //       results = mCommonDao.getAllRegions();
  //      if (Constant.dwRegion==null||Constant.dwRegion.getRegionId()==0) {
       //     location();
   //     }else{
   //         mLocCity.setText(Constant.dwRegion.getName());
   //     }
//        if (results.isEmpty()) {
//            getData();
//        } else {
//            convertRegions(results);
//            mRegionAdapter = new RootRegionAdapter(RootRegionActivity.this, regions, islogin);
//            mRegionListView.setAdapter(mRegionAdapter);
//
//            if (Constant.dwRegion==null) {
//                location();
//            } else {
//                int rid = share.getInt("regionId", Constant.regionId);
//                String rName = share.getString("regionName", Constant.regionName);
//                mLocRegion = new Region();
//                mLocRegion.setRegionId(rid);
//                mLocRegion.setName(rName);
//                if (islogin) {
//                    cityOnSelect(mLocRegion);
//                }else {
//                    mLocCity.setClickable(true);
//                }
//                //	mLocCity.setText(rName);
//            }
//        }
    }

    private void  initRegionDate(){

        regin=new  Region();
         List<Region> SubRegions=  new  ArrayList<Region>();
        regin.setProvince("浙江省");
        regin.setProvinceId(1);
        regin.setCitySequence(1);
        regin.setName("杭州");
        regin.setRegionId(1);
        SubRegions.add(regin);
       // regions.add(regin);


        regin=new  Region();
        regin.setProvince("浙江省");
        regin.setProvinceId(1);
        regin.setCitySequence(2);
        regin.setName("宁波");
        regin.setRegionId(2);
        SubRegions.add(regin);


        regin=new  Region();
        regin.setProvince("浙江省");
        regin.setProvinceId(1);
        regin.setCitySequence(3);
        regin.setName("温州");
        regin.setRegionId(3);
        SubRegions.add(regin);



        regin=new  Region();
        regin.setProvince("浙江省");
        regin.setProvinceId(1);
        regin.setCitySequence(4);
        regin.setName("绍兴");
        regin.setRegionId(3);
        SubRegions.add(regin);


        regin=new  Region();
        regin.setProvince("浙江省");
        regin.setProvinceId(1);
        regin.setCitySequence(4);
        regin.setName("湖州");
        regin.setRegionId(4);
        SubRegions.add(regin);


        regin=new  Region();
        regin.setProvince("浙江省");
        regin.setProvinceId(1);
        regin.setCitySequence(5);
        regin.setName("衢州");
        regin.setRegionId(5);

        SubRegions.add(regin);
        regin.setSubRegions(SubRegions);
        regions.add(regin);
        SubRegions=  new  ArrayList<Region>();

        regin=new  Region();
        regin.setProvince("直辖市");
        regin.setProvinceId(2);
        regin.setCitySequence(1);
        regin.setName("北京");
        regin.setRegionId(6);
        SubRegions.add(regin);


        regin=new  Region();
        regin.setProvince("直辖市");
        regin.setProvinceId(2);
        regin.setCitySequence(1);
        regin.setName("上海");
        regin.setRegionId(7);
        SubRegions.add(regin);


        regin=new  Region();
        regin.setProvince("直辖市");
        regin.setProvinceId(2);
        regin.setCitySequence(1);
        regin.setName("天津");
        regin.setRegionId(8);
        SubRegions.add(regin);


        regin=new  Region();
        regin.setProvince("直辖市");
        regin.setProvinceId(2);
        regin.setCitySequence(9);
        regin.setName("重庆");
        regin.setRegionId(9);
        SubRegions.add(regin);
        regin.setSubRegions(SubRegions);

        SubRegions.add(regin);
        regin.setSubRegions(SubRegions);
        regions.add(regin);
        SubRegions=  new  ArrayList<Region>();



        regin=new  Region();
        regin.setProvince("江苏省");
        regin.setProvinceId(3);
        regin.setCitySequence(1);
        regin.setName("苏州5");
        regin.setRegionId(10);
        SubRegions.add(regin);


        regin=new  Region();
        regin.setProvince("江苏省");
        regin.setProvinceId(3);
        regin.setCitySequence(1);
        regin.setName("苏州4");
        regin.setRegionId(11);
        SubRegions.add(regin);


        regin=new  Region();
        regin.setProvince("江苏省");
        regin.setProvinceId(3);
        regin.setCitySequence(1);
        regin.setName("苏州2");
        regin.setRegionId(12);
        SubRegions.add(regin);


        regin=new  Region();
        regin.setProvince("江苏省");
        regin.setProvinceId(3);
        regin.setCitySequence(1);
        regin.setName("苏州1");
        regin.setRegionId(13);
        SubRegions.add(regin);

        regin=new  Region();
        regin.setProvince("江苏省");
        regin.setProvinceId(3);
        regin.setCitySequence(1);
        regin.setName("苏州");
        regin.setRegionId(14);

        SubRegions.add(regin);
        regin.setSubRegions(SubRegions);
        regions.add(regin);
        SubRegions=  new  ArrayList<Region>();


        regin=new  Region();
        regin.setProvince("辽宁省");
        regin.setProvinceId(4);
        regin.setCitySequence(1);
        regin.setName("沈阳");
        regin.setRegionId(15);
        SubRegions.add(regin);

        regin=new  Region();
        regin.setProvince("辽宁省");
        regin.setProvinceId(4);
        regin.setCitySequence(1);
        regin.setName("大连1");
        regin.setRegionId(16);
        SubRegions.add(regin);

        regin=new  Region();
        regin.setProvince("辽宁省");
        regin.setProvinceId(4);
        regin.setCitySequence(1);
        regin.setName("大连2");
        regin.setRegionId(17);
        SubRegions.add(regin);

        regin=new  Region();
        regin.setProvince("辽宁省");
        regin.setProvinceId(4);
        regin.setCitySequence(1);
        regin.setName("大连3");
        regin.setRegionId(18);
        SubRegions.add(regin);

        regin=new  Region();
        regin.setProvince("辽宁省");
        regin.setProvinceId(4);
        regin.setCitySequence(19);
        regin.setName("大连4");
        regin.setRegionId(19);
        SubRegions.add(regin);

        regin=new  Region();
        regin.setProvince("辽宁省");
        regin.setProvinceId(4);
        regin.setCitySequence(20);
        regin.setName("大连5");
        regin.setRegionId(20);
        SubRegions.add(regin);
        regin.setSubRegions(SubRegions);
        regions.add(regin);





    }
    private void initView() {
        mLocCity = (TextView) findViewById(R.id.txt_current_city);
        mLocCity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

//                if(dwLogRegion!=null){
//                    cityOnSelect(dwLogRegion);
//                    //	dwLogRegion=Constant.dwRegion;
//                    //		if(dwLogRegion=null){
//
//                    //		}
//                }else {
//                    dwLogRegion=Constant.dwRegion;
//                    if(dwLogRegion==null){
//                        return;
//                    }else {
//                        cityOnSelect(dwLogRegion);
//                    }
//                }

            }
        });
        mRegionListView = (ListView) findViewById(R.id.list_view_region);
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                mLocCity.setText("宁波市");
            }
        },1000);
    }

    private void getData() {
//        NetUtil.HttpGetData(Url.all_Region, new HttpAsyncCallback() {
//            @Override
//            public void onSuccess(JSONObject post) {
//                if (post != null) {
//                    try {
//                        String isNo = post.getString("isNo");
//                        Message msg = new Message();
//                        if ("0".equals(isNo)) {
//                            msg.arg1 = 0;
//                            msg.obj = post;
//                            handler.sendMessage(msg);
//                        } else if ("-1".equals(isNo)) {
//                            msg.arg1 = -1;
//                        }
//                    } catch (JSONException e) {
//                        // TODO Auto-generated catch block
//                        e.printStackTrace();
//                    }
//                }
//            }
//        });
        // initLastRegion();
    }

    /**
     * 历史访问城市
     */
    private void initLastRegion() {
//        lastRegions = CommonDao.getInstance(RootRegionActivity.this).getLastRegions();
//        lastNames = new ArrayList<String>();
//        for (RootRegion region : lastRegions) {
//            lastNames.add(region.getName());
//        }
//        ViewGroup.LayoutParams layoutParams = lastGrid.getLayoutParams();
//        lastGrid.setLayoutParams(layoutParams);
//        lastGrid.setAdapter(new ArrayAdapter<String>(RootRegionActivity.this, R.layout.text4, lastNames));
//        lastGrid.setOnItemClickListener(new AdapterView.OnItemClickListener() {
//            @Override
//            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
////                Constant.regionId = lastRegions.get(arg2).getRegionId();
////                Constant.regionName = lastRegions.get(arg2).getName();
////                SharedPreferences share = getSharedPreferences("user_msg", 0);
////                share.edit().putInt("regionId", Constant.regionId).commit();
////                share.edit().putString("regionName", Constant.regionName).commit();
////                CommonDao.getInstance(RootRegionActivity.this).addLastRegion(lastRegions.get(arg2));
////                if (islogin) {
////                    if (Constant.isUser) startActivity(new Intent(RootRegionActivity.this, PersonIndexActivity.class));
////                    else startActivity(new Intent(RootRegionActivity.this, CompanyIndexActivity.class));
////                    overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
////                    RootRegionActivity.this.finish();
////                } else {
////                    onBackPressed();
////                }
//            }
//        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
//        BLocator.getInstance().unbindService();
        //mCommonDao.close();
    }

    private Region getRegionByName(String name) {
//        for (Region region : results) {
//            if (region.getName().equals(name)) {
//                return region;
//            }
//            continue;
//        }
        return null;
    }

    public void cityOnSelect(Region region) {
//        Constant.regionId = region.getRegionId();
//        Constant.regionName = region.getName();
      SharedPreferences share = getSharedPreferences("user_msg", 0);
        Toast.makeText(this,region.getName()+"KingTang",Toast.LENGTH_SHORT).show();
//        share.edit().putInt("regionId", Constant.regionId).commit();
//        share.edit().putString("regionName", Constant.regionName).commit();
//        if (islogin) {
//            if (Constant.isUser) {
//                startActivity(new Intent(this, PersonIndexActivity.class));
//            } else {
//                startActivity(new Intent(this, CompanyIndexActivity.class));
//            }
//            overridePendingTransition(R.anim.push_left_in, R.anim.push_left_out);
//            finish();
//        } else {
//            Intent data = new Intent();
//            data.putExtra("name", Constant.regionName);
//            data.putExtra("id", Constant.regionId);
//            setResult(Constant.RESPONSED_Root, data);
//            finish();
//        }
    }

    public static void actionStart(Context context, boolean isLogin) {
        Intent intent = new Intent(context, RootRegionActivity.class);
        intent.putExtra("isLogin", isLogin);
        context.startActivity(intent);
    }

    public void convertRegions(List<Region> pRegions) {
//        TreeMap<Integer, Region> map = new TreeMap<Integer, Region>();
//        for (Region region : pRegions) {
//            if (map.get(region.getProvinceId()) == null) {
//                map.put(region.getProvinceId(), region);
//            }
//            Region regionItem = new Region();
//            regionItem.setName(region.getName());
//            regionItem.setRegionId(region.getRegionId());
//            map.get(region.getProvinceId()).getSubRegions().add(regionItem);
//        }
//        Iterator iterator = map.entrySet().iterator();
//        while (iterator.hasNext()) {
//            Map.Entry<Integer, Region> entry = (Map.Entry<Integer, Region>) iterator.next();
//            regions.add(entry.getValue());
//        }
    }


    private void location() {


        BLocator.getInstance().bindService(new BDLocationListener() {
            @Override
            public void onReceiveLocation(BDLocation bdLocation) {
                // fail
                if (TextUtils.isEmpty(bdLocation.getCity())) {
                  //  mLocCity.setText(R.string.loc_fail_msg + " " + bdLocation.getLocType());
                    // success
                } else {
                    String city = bdLocation.getCity().replace("市", "");
                    Log.i("111111111",bdLocation.getProvince()+"111"+bdLocation.getCity()+"市"+"111"+bdLocation.getAddrStr()+bdLocation.getDistrict()+bdLocation.getStreet()+bdLocation.getStreetNumber());
//                    Region region = getRegionByName(city);
//                    if (region == null) {
//                        mLocCity.setText(R.string.loc_fail_msg);
//                        getData();
//                        if (islogin) {
//                            int rid = share.getInt("regionId", Constant.regionId);
//                            String rName = share.getString("regionName", Constant.regionName);
//                            if (share.getInt("regionId", Constant.regionId) != 0) {
//                                mLocRegion = new Region();
//                                mLocRegion.setRegionId(rid);
//                                mLocRegion.setName(rName);
//                                cityOnSelect(mLocRegion);
//                            }
//                        }
//                    } else {
//                        mLocCity.setClickable(true);
//                        mLocCity.setText(city);
//                        dwLogRegion=region;
//                        Constant.dwRegion=region;
//                        mLocRegion = region;
//                        if (islogin) {
//                            cityOnSelect(mLocRegion);
//                        }
//                    }
                }
            }
        });
    }


    private void checkUpdateRegion(){
  //      Map<String,Object> params = new HashMap<String, Object>();
 //       final int oVersion = share.getInt("region_update",0);
 //       params.put("Version",oVersion);
//        NetUtil.HttpPostData(Url.CHECK_REGION_UPDATE, params,new HttpAsyncCallback() {
//            @Override
//            public void onSuccess(JSONObject post) {
//                if (post != null) {
//                    try {
//                        String isNo = post.getString("isNo");
//                        if ("0".equals(isNo)) {
//                            int nVersion = post.getInt("version");
//                            if(nVersion > oVersion){
//                                share.edit().putInt("region_update",nVersion).commit();
//                                getData();
//                            }
//                        }
//                    } catch (JSONException e) {
//                        e.printStackTrace();
//                    }
//                }
//            }
//        });
    }


}
